var http = require('http');
var fs = require('fs');
var template = require('art-template');

var server = http.createServer();

var wwwDir = 'H:/view';

server.on('request',function(req,res){
    var url = req.url;

    var filePath = '/index.html';
    console.log('======'+url);
    if(url !== '/'){
        filePath = url;
    }
    filePath = wwwDir + filePath;
    //判断传过来的是文件还是目录
    fs.stat(filePath, function (err, stats) {
        console.log(filePath);
        console.log(stats.isFile());         //true
        console.log(stats.isDirectory())
        if(stats.isFile()){
            fs.readFile(filePath,function(error,data){
                if(error){
                    console.log('读取文件失败！');
                    res.setHeader('Content-Type','text/plain;charset=utf-8');
                    res.end('读取文件失败！');
                }else{
                    res.setHeader('Content-Type','text/html;charset=utf-8');
                     // 默认读取到的 data 是二进制数据
                    // 而模板引擎的 render 方法需要接收的是字符串
                    // 所以我们在这里需要把 data 二进制数据转为 字符串 才可以给模板引擎使用
                    res.end(data);
                }
            })
        }
        if(stats.isDirectory()){
            // 1. 如何得到 wwwDir 目录列表中的文件名和目录名
            //    fs.readdir
            // 2. 如何将得到的文件名和目录名替换到 template.html 中
            //    2.1 在 template.html 中需要替换的位置预留一个特殊的标记（就像以前使用模板引擎的标记一样）
            //    2.2 根据 files 生成需要的 HTML 内容
            // 只要你做了这两件事儿，那这个问题就解决了
                fs.readdir(filePath,function(error,files){
                    console.log("====="+filePath,files);
                    if(error){
                        res.setHeader('Content-Type','text/plain;charset=utf-8');
                        res.end('找不到相应的路径='+filePath);
                     }else{
                        res.setHeader('Content-Type','text/html;charset=utf-8');
                        var content = '';
                        files.forEach(function(item){
                           // 在 EcmaScript 6 的 ` 字符串中，可以使用 ${} 来引用变量
                            content += `
                            <tr>
                            <td data-value="apple/"><a class="icon dir" href="/D:/Movie/www/apple/">${item}</a></td>
                            <td class="detailsColumn" data-value="0"></td>
                            <td class="detailsColumn" data-value="1509589967">2017/11/2 上午10:32:47</td>
                            </tr>  `;
                        })
                        var data = '';
                        fs.readFile('../static/template-apache.html', function (err, data) {
                              if(err){
                                  res.end('can not find template.html !');
                              }else{
                                //  console.log("+++++++"+data.toString())
                                //  data = data.toString();
                                //  console.log('content='+content);
                                //  data = data.replace('^_^', content)
                                 // 这里只需要使用模板引擎解析替换 data 中的模板字符串就可以了
                                // 数据就是 files
                                // 然后去你的 template.html 文件中编写你的模板语法就可以了
                                var htmlStr = template.render(data.toString(), {
                                    title: '哈哈',
                                    files: files
                                })
                                 // console.log('data='+data);
                                  res.end(htmlStr);
                              }  
                        })
                      
                     }
                })
        }
    })
   
})

server.listen('3000',function(){
    console.log('server running!');
})